package br.nsi.ardae.banco_teste;

import java.sql.*;

import br.nsi.ardae.modelo_teste.*;
 
public class SimulaVenda {

	private static SimulaVenda unique = null;
	private static final int qtdVendas = 10000;
	
	private static int qtdProduto;
	private static int qtdLocal;
	private static int qtdTempo;
	private static int qtdVendedor;
	
	
	private SimulaVenda(){
		
		SimulaVenda.qtdVendedor = SimulaVendedor.getQtdVendedor();
		SimulaVenda.qtdProduto = SimulaProduto.getQtdProduto();
		SimulaVenda.qtdLocal = SimulaLocal.getQtdLocal();
		SimulaVenda.qtdTempo = SimulaTempo.getQtdTempo();
	}
	
	public static SimulaVenda newSimulaVenda(){
		if (SimulaVenda.unique == null) SimulaVenda.unique = new SimulaVenda();
		return SimulaVenda.unique;
	}
	
	public static int getQtdVenda(){
		return SimulaVenda.qtdVendas;
	}
	
	private int getQuantidadeProduto(){
		return (int)(Math.random()*100 % 30);
	}
	
	private float getValorVenda(){
		return (float) 10.0;
	}
	
	public void inserirVendas(Connection conexao) throws SQLException{
		
		int id_prod = (int)(1 + 1000*Math.random() % SimulaProduto.getQtdProduto());
		int id_local = (int)(1 + 1000*Math.random() % SimulaLocal.getQtdLocal());
		int id_tempo = (int)(1 + 1000*Math.random() % SimulaTempo.getQtdTempo());
		int id_vendedor = (int)(1 + 1000*Math.random() % SimulaVendedor.getQtdVendedor());
		
		int qtd = this.getQuantidadeProduto();
		float valor_venda;
		
		Statement select = conexao.createStatement();
		ResultSet rs1 = select.executeQuery("SELECT id, valor FROM produtos where id = "+id_prod);

		rs1.next();
		valor_venda = rs1.getFloat(2) * qtd;
		
		System.out.println("qtd: "+qtd+" valor_venda: "+valor_venda+" id_prod: "+id_prod+" id_local: "+id_local+" id_tempo: "+id_tempo+" id_vendedor: "+id_vendedor);		
		
		PreparedStatement pstmt = conexao.prepareStatement("Insert into venda (quantidade, valor_venda, id_produto, id_local, id_tempo, id_vendedor) values (?,?,?,?,?,?)");
		pstmt.setInt(1, qtd);
		pstmt.setFloat(2, valor_venda);
		pstmt.setInt(3, id_prod);
		pstmt.setInt(4, id_local);
		pstmt.setInt(5, id_tempo); 
		pstmt.setInt(6, id_vendedor);
		pstmt.executeUpdate();

		pstmt.close();
		select.close();
		rs1.close();
		
	}	
}
